<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // function fn(arg) {
    //     console.log(arg);
    // }
    // fn(1);
    // fn([1, 2, 3]);
    // fn(function () {  //函数可以作为参数 到另一个函数中(被该函数的形参接收 可以通过形参调用  -> 至于什么时候调用 -> 看需求)
    //     console.log(1111);
    // });



</script>
<script>
    // 数组的遍历方法 -> 官方给定专门遍历数组的方法
    // var sum = 0;
    // list.forEach(function (item, index, array) {
    //     // console.log(item, index, array);
    //     sum += item;
    // })
    // console.log(sum);


    // list.push(10);  push是数组的方法 10是实际参数

    // 将函数作为参数(实参)传入到另一个函数中  => 回调函数(callback)

    // reduce(callback,initValue)  数组归并 => 传入一个回调函数, 每次循环时执行传入的回调函数(期望循环执行的内容)
    // 回调函数有四个参数function(prev,item, index, array){}
    // prev 1. 接收initValue作为prev的初始值  2. 接收每次函数的执行结果,下次循环时传入
    // item 循环的当前元素
    // index 循环的当前下标
    // array 原数组

    // initValue  传入一个参数作为prev的初始值 ( 注意: 如果不设置初始值,默认将数组的第一个元素作为初始值,从第二个元素开始向后遍历)

    // 返回值: 最终prev的值



    // var list = [1, 4, 7, 2, 5, 8, 3, 6, 9];
    // var result = list.reduce(function (prev, item, index, array) { // 形参
    //     console.log(prev, item, index, array);
    // }, 0)
    // console.log(result);

    // var list = [1, 4, 7, 2, 5, 8, 3, 6, 9];
    // var result = list.reduce(function (prev, item, index, array) { // 形参
    //     console.log(prev, item, index, array);
    //     return prev + item; // 1
    // }, 0)
    // console.log(result);

    // 如果不设置初始值,默认将数组的第一个元素作为初始值,从第二个元素开始向后遍历
    // var list = [1, 4, 7, 2, 5, 8, 3, 6, 9];
    // var result = list.reduce(function (prev, item, index, array) { // 形参
    //     console.log(prev, item, index, array);
    //     return prev + item; // 1
    // })
    // console.log(result);



    // 数组贯穿循环
    // map
    // var list = [1, 4, 7, 2, 5, 8, 3, 6, 9];
    // var result = list.reduce(function (prev, item, index, array) { // 形参
    //     // prev 接收一个数组
    //     prev.push(item * 10);
    //     return prev;
    // }, [])
    // console.log(result);

    // filter
    var list = [1, 4, 7, 2, 5, 8, 3, 6, 9];
    var result = list.reduce(function (prev, item, index, array) { // 形参
        // prev 接收一个数组
        if (item % 2 == 0) {
            prev.push(item);
        }
        return prev;
    }, [])
    console.log(result);


    // 是否存在6的倍数
    var list = [1, 4, 7, 2, 5, 8, 3, 6, 9];
    var result = list.reduce(function (prev, item, index, array) { // 形参
        // prev 接收一个数组
        if (item % 2 == 0) {
            prev = true;
        }
        return prev;
    }, false)
    console.log(result);









</script>

</html>